package com.iakuil.app.common.core.util;

import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.convert.Convert;
import lombok.experimental.UtilityClass;
import org.springframework.lang.Nullable;
import org.springframework.web.context.request.RequestContextHolder;

/**
 * 安全工具类
 *
 * @author Kai
 */
@UtilityClass
public class SecurityUtils {

    /**
     * 获取当前登录用户的ID
     *
     * @return UID
     */
    @Nullable
    public Long getCurrentUserId() {
        return isLogin() ? StpUtil.getLoginIdAsLong() : null;
    }

    /**
     * 通过token获取当前登录用户的ID
     *
     * @param token app-token
     * @return UID
     */
    @Nullable
    public Long getUserIdByToken(String token) {
        return isLogin() ? Convert.toLong(StpUtil.getLoginIdByToken(token)) : null;
    }

    /**
     * 当前是否Web环境，并且已经是登录状态
     *
     * @return 是否登录状态
     */
    public static boolean isLogin() {
        return RequestContextHolder.getRequestAttributes() != null && StpUtil.isLogin();
    }
}
